home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!cs.utexas.edu!sun-barr!cronkite.Central.Sun.COM!exodus!trantor.harris-atd.com
- From: chuck@trantor.harris-atd.com (Chuck Musciano)
- Newsgroups: comp.sources.x
- Subject: v14i005: Boss, Patch3, Part01/01
- Message-ID: <19070@exodus.Eng.Sun.COM>
- Date: 27 Aug 91 05:33:15 GMT
- References: <csx-14i005-boss@uunet.UU.NET>
- Sender: news@exodus.Eng.Sun.COM
- Lines: 1149
- Approved: argv@sun.com
-
- Submitted-by: Chuck Musciano <chuck@trantor.harris-atd.com>
- Posting-number: Volume 14, Issue 5
- Archive-name: boss/patch3
- Patch-To: boss: Volume 10, Issue 3-8, 91
- Patch-To: boss: Volume 11, Issue 4, 81
-
- This patch brings Boss 1.0b to version 1.0c, fixing a critical bug in
- downloading and a number of minor problems. If you previously had
- difficulty downloading data to your Casio BOSS, this patch should clear
- up any problems.
-
- You'll need Boss 1.0b to apply this patch. Sources are available
- via FTP and archive server on uunet.uu.net, and via FTP from
- trantor.harris-atd.com, in the /pub/suntools/boss directory.
-
-
- Chuck Musciano ARPA : chuck@trantor.harris-atd.com
- Harris Corporation Usenet: ...!uunet!x102a!trantor!chuck
- PO Box 37, MS 3A/1912 AT&T : (407) 727-6131
- Melbourne, FL 32902 FAX : (407) 729-3363
-
- A good newspaper is never good enough,
- but a lousy newspaper is a joy forever. -- Garrison Keillor
-
- #!/bin/sh
- # This is a shell archive (produced by shar 3.49)
- # To extract the files from this archive, save it to a file, remove
- # everything above the "!/bin/sh" line above, and type "sh file_name".
- #
- # made 07/24/1991 13:42 UTC by chuck@pluto
- # Source directory /tmp_mnt/net/melmac/home/chuck/projects/release/boss/1.0/patch03
- #
- # existing files will NOT be overwritten unless -c is specified
- #
- # This shar contains:
- # length mode name
- # ------ ---------- ------------------------------------------
- # 32133 -rw-rw-r-- patch
- #
- # ============= patch ==============
- if test -f 'patch' -a X"$1" != X"-c"; then
- echo 'x - skipping patch (File already exists)'
- else
- echo 'x - extracting patch (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'patch' &&
- *** Makefile.orig Wed Jul 24 09:38:23 1991
- --- Makefile Fri May 17 09:10:01 1991
- ***************
- *** 22,28 ****
- X
- X OFILES = about.o boss.o boss_ui.o busy.o calentool.o casio_master.o casio_slave.o \
- X database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
- ! expand.o filename_completion.o list_misc.o misc.o object.o packet.o \
- X parse.o pinned_menu_notify.o place_dialog.o print.o \
- X record.o send_mail.o window_misc.o
- X
- --- 22,28 ----
- X
- X OFILES = about.o boss.o boss_ui.o busy.o calentool.o casio_master.o casio_slave.o \
- X database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
- ! expand.o filename_completion.o getopt.o list_misc.o misc.o object.o packet.o \
- X parse.o pinned_menu_notify.o place_dialog.o print.o \
- X record.o send_mail.o window_misc.o
- X
- *** README.orig Wed Jul 24 09:38:25 1991
- --- README Wed Jul 24 09:36:03 1991
- ***************
- *** 17,23 ****
- X /* without prior permission from Harris Corporation. */
- X /************************************************************************/
- X
- ! Boss Version 1.0
- X
- X Boss lets Casio BOSS users transfer data between their BOSS and
- X a workstation. Users can also convert BOSS schedule items to formats useful
- --- 17,23 ----
- X /* without prior permission from Harris Corporation. */
- X /************************************************************************/
- X
- ! Boss Version 1.0c
- X
- X Boss lets Casio BOSS users transfer data between their BOSS and
- X a workstation. Users can also convert BOSS schedule items to formats useful
- *** Imakefile.orig Wed Jul 24 09:38:25 1991
- --- Imakefile Fri May 17 09:10:01 1991
- ***************
- *** 12,24 ****
- X
- X SRCS = about.c boss.c boss_ui.c busy.c calentool.c casio_master.c casio_slave.c \
- X database.c do_clear.c do_load.c do_port.c do_schedule.c do_store.c \
- ! expand.c filename_completion.c list_misc.c misc.c object.c packet.c \
- X parse.y pinned_menu_notify.c place_dialog.c print.c \
- X record.c send_mail.c window_misc.c
- X
- X OBJS = about.o boss.o boss_ui.o busy.o calentool.o casio_master.o casio_slave.o \
- X database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
- ! expand.o filename_completion.o list_misc.o misc.o object.o packet.o \
- X parse.o pinned_menu_notify.o place_dialog.o print.o \
- X record.o send_mail.o window_misc.o
- X
- --- 12,24 ----
- X
- X SRCS = about.c boss.c boss_ui.c busy.c calentool.c casio_master.c casio_slave.c \
- X database.c do_clear.c do_load.c do_port.c do_schedule.c do_store.c \
- ! expand.c filename_completion.c getopt.c list_misc.c misc.c object.c packet.c \
- X parse.y pinned_menu_notify.c place_dialog.c print.c \
- X record.c send_mail.c window_misc.c
- X
- X OBJS = about.o boss.o boss_ui.o busy.o calentool.o casio_master.o casio_slave.o \
- X database.o do_clear.o do_load.o do_port.o do_schedule.o do_store.o \
- ! expand.o filename_completion.o getopt.o list_misc.o misc.o object.o packet.o \
- X parse.o pinned_menu_notify.o place_dialog.o print.o \
- X record.o send_mail.o window_misc.o
- X
- *** boss.man.orig Wed Jul 24 09:38:26 1991
- --- boss.man Wed Mar 27 07:27:30 1991
- ***************
- *** 75,82 ****
- X The text fields associated with \*(lqCasio-format file\*(rq and \*(lqASCII text file\*(rq
- X provide file name completion, like \f2csh\fP(1), by typing
- X a space or carriage return.
- ! .IP "\fBFile: Save Data...\fP"
- ! brings up the \fBSave Data\fP dialog box. This dialog contains a non-exclusive
- X setting labeled \*(lqStore items\*(rq that lets you choose which items are to
- X be stored. Only those items selected in this setting will be written to the
- X destination selected.
- --- 75,82 ----
- X The text fields associated with \*(lqCasio-format file\*(rq and \*(lqASCII text file\*(rq
- X provide file name completion, like \f2csh\fP(1), by typing
- X a space or carriage return.
- ! .IP "\fBFile: Store Data...\fP"
- ! brings up the \fBStore Data\fP dialog box. This dialog contains a non-exclusive
- X setting labeled \*(lqStore items\*(rq that lets you choose which items are to
- X be stored. Only those items selected in this setting will be written to the
- X destination selected.
- *** boss_ui.c.orig Wed Jul 24 09:38:29 1991
- --- boss_ui.c Wed Jul 24 09:38:17 1991
- ***************
- *** 103,109 ****
- X XV_KEY_DATA, INSTANCE, ip,
- X MENU_ITEM,
- X XV_KEY_DATA, INSTANCE, ip,
- ! MENU_STRING, "Port properties...",
- X MENU_GEN_PROC, port_dialog,
- X NULL,
- X MENU_DEFAULT, 2,
- --- 103,109 ----
- X XV_KEY_DATA, INSTANCE, ip,
- X MENU_ITEM,
- X XV_KEY_DATA, INSTANCE, ip,
- ! MENU_STRING, "Port Properties...",
- X MENU_GEN_PROC, port_dialog,
- X NULL,
- X MENU_DEFAULT, 2,
- ***************
- *** 192,198 ****
- X XV_KEY_DATA, INSTANCE, ip,
- X XV_WIDTH, 256,
- X XV_HEIGHT, 88,
- ! XV_LABEL, "Boss 1.0b",
- X FRAME_CLOSED, FALSE,
- X FRAME_SHOW_FOOTER, FALSE,
- X FRAME_SHOW_RESIZE_CORNER, FALSE,
- --- 192,198 ----
- X XV_KEY_DATA, INSTANCE, ip,
- X XV_WIDTH, 256,
- X XV_HEIGHT, 88,
- ! XV_LABEL, "Boss 1.0c",
- X FRAME_CLOSED, FALSE,
- X FRAME_SHOW_FOOTER, FALSE,
- X FRAME_SHOW_RESIZE_CORNER, FALSE,
- ***************
- *** 1658,1666 ****
- X XV_HELP_DATA, "boss:msg_1",
- X XV_X, 222,
- X XV_Y, 14,
- ! XV_WIDTH, 66,
- X XV_HEIGHT, 13,
- ! PANEL_LABEL_STRING, "Boss 1.0b",
- X PANEL_LABEL_BOLD, TRUE,
- X NULL);
- X return obj;
- --- 1658,1666 ----
- X XV_HELP_DATA, "boss:msg_1",
- X XV_X, 222,
- X XV_Y, 14,
- ! XV_WIDTH, 64,
- X XV_HEIGHT, 13,
- ! PANEL_LABEL_STRING, "Boss 1.0c",
- X PANEL_LABEL_BOLD, TRUE,
- X NULL);
- X return obj;
- ***************
- *** 2063,2073 ****
- X obj = xv_create(owner, PANEL_BUTTON,
- X XV_KEY_DATA, INSTANCE, ip,
- X XV_HELP_DATA, "boss:send_mail",
- ! XV_X, 215,
- X XV_Y, 352,
- ! XV_WIDTH, 78,
- X XV_HEIGHT, 20,
- ! PANEL_LABEL_STRING, "Send Mail",
- X PANEL_NOTIFY_PROC, popup_send_mail,
- X NULL);
- X return obj;
- --- 2063,2073 ----
- X obj = xv_create(owner, PANEL_BUTTON,
- X XV_KEY_DATA, INSTANCE, ip,
- X XV_HELP_DATA, "boss:send_mail",
- ! XV_X, 210,
- X XV_Y, 352,
- ! XV_WIDTH, 87,
- X XV_HEIGHT, 20,
- ! PANEL_LABEL_STRING, "Send Mail...",
- X PANEL_NOTIFY_PROC, popup_send_mail,
- X NULL);
- X return obj;
- *** casio.h.orig Wed Jul 24 09:38:34 1991
- --- casio.h Wed Jul 17 08:26:00 1991
- ***************
- *** 24,33 ****
- X /************************************************************************/
- X
- X #define PACKET_START ':'
- ! #define XMIT_TERMINATE '!'
- ! #define RCV_ERROR '"'
- ! #define PACKET_ACK '#'
- ! #define MODE_ERROR '$'
- X
- X PUBLIC int open_casio();
- X PUBLIC int read_casio();
- --- 24,34 ----
- X /************************************************************************/
- X
- X #define PACKET_START ':'
- ! #define XMIT_TERMINATE 0x21
- ! #define RCV_ERROR 0x22
- ! #define PACKET_ACK 0x23
- ! #define MODE_ERROR 0x24
- ! #define XMIT_ERROR 0x3f
- X
- X PUBLIC int open_casio();
- X PUBLIC int read_casio();
- *** casio_master.c.orig Wed Jul 24 09:38:35 1991
- --- casio_master.c Wed Jun 19 10:18:45 1991
- ***************
- *** 220,227 ****
- X byte b;
- X
- X {
- ! buf[0] = FLUSH_CASIO;
- X buf[1] = b;
- X if (do_write(buf, 2))
- X read_reply();
- X }
- --- 220,239 ----
- X byte b;
- X
- X {
- ! buf[0] = UNGET_BYTE;
- X buf[1] = b;
- X if (do_write(buf, 2))
- + read_reply();
- + }
- +
- + /************************************************************************/
- + EXPORT wait_casio(delay)
- +
- + int delay;
- +
- + {
- + buf[0] = WAIT_CASIO;
- + bcopy(&delay, buf + 1, sizeof(int));
- + if (do_write(buf, 5))
- X read_reply();
- X }
- *** casio_slave.c.orig Wed Jul 24 09:38:36 1991
- --- casio_slave.c Wed Jun 19 10:18:44 1991
- ***************
- *** 292,297 ****
- --- 292,304 ----
- X case UNGET_BYTE : if ((b = getc(commands_in)) != EOF)
- X unget_byte(b);
- X break;
- + case WAIT_CASIO : if (fread(&timeout, 1, sizeof(int), commands_in) == sizeof(int)) {
- + usleep(timeout * 1000);
- + return_result(NULL);
- + }
- + else
- + return_result("Error reading WAIT_CASIO parameters in Casio slave");
- + break;
- X default : return_result("Unknown protocol command: %d", cmd);
- X break;
- X }
- *** do_load.c.orig Wed Jul 24 09:38:38 1991
- --- do_load.c Wed Jul 17 15:42:24 1991
- ***************
- *** 55,66 ****
- X xv_set(dialog->casio_source,
- X PANEL_VALUE, casio_file,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->ascii_source,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->source, PANEL_VALUE, 0, NULL);
- --- 55,66 ----
- X xv_set(dialog->casio_source,
- X PANEL_VALUE, casio_file,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r\t ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->ascii_source,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r\t ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->source, PANEL_VALUE, 0, NULL);
- *** do_schedule.c.orig Wed Jul 24 09:38:40 1991
- --- do_schedule.c Wed Jul 17 15:42:23 1991
- ***************
- *** 188,194 ****
- X xv_set(dialog->appt_file,
- X PANEL_VALUE, appts_file,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r ",
- X PANEL_INACTIVE, FALSE,
- X NULL);
- X xv_set(dialog->schedule_format, PANEL_VALUE, 0, NULL);
- --- 188,194 ----
- X xv_set(dialog->appt_file,
- X PANEL_VALUE, appts_file,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r\t ",
- X PANEL_INACTIVE, FALSE,
- X NULL);
- X xv_set(dialog->schedule_format, PANEL_VALUE, 0, NULL);
- *** do_store.c.orig Wed Jul 24 09:38:41 1991
- --- do_store.c Wed Jul 17 15:42:23 1991
- ***************
- *** 57,68 ****
- X xv_set(dialog->casio_dest,
- X PANEL_VALUE, casio_file,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->ascii_dest,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->store_data, PANEL_VALUE, (1 << MAX_OBJECT_KINDS) - 1, NULL);
- --- 57,68 ----
- X xv_set(dialog->casio_dest,
- X PANEL_VALUE, casio_file,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r\t ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->ascii_dest,
- X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
- ! PANEL_NOTIFY_STRING, "\n\r\t ",
- X PANEL_INACTIVE, TRUE,
- X NULL);
- X xv_set(dialog->store_data, PANEL_VALUE, (1 << MAX_OBJECT_KINDS) - 1, NULL);
- *** filename_completion.c.orig Wed Jul 24 09:38:42 1991
- --- filename_completion.c Wed Jul 17 15:42:21 1991
- ***************
- *** 41,47 ****
- X
- X switch (event_action(event)) {
- X case '\n' :
- ! case '\r' :
- X case ' ' : if ((p = expand_filename((char *) xv_get(item, PANEL_VALUE))) == NULL)
- X window_bell(xv_get(item, XV_OWNER));
- X else
- --- 41,47 ----
- X
- X switch (event_action(event)) {
- X case '\n' :
- ! case '\r' :
- X case ' ' : if ((p = expand_filename((char *) xv_get(item, PANEL_VALUE))) == NULL)
- X window_bell(xv_get(item, XV_OWNER));
- X else
- *** getopt.c.orig Wed Jul 24 09:38:43 1991
- --- getopt.c Fri May 17 09:10:22 1991
- ***************
- *** 0 ****
- --- 1,64 ----
- + /************************************************************************/
- + /* Copyright 1987-1991 by Chuck Musciano and Harris Corporation */
- + /* */
- + /* Full ownership of this software, and all rights pertaining to */
- + /* the for-profit distribution of this software, are retained by */
- + /* Chuck Musciano and Harris Corporation. You are permitted to */
- + /* use this software without fee. This software is provided "as */
- + /* is" without express or implied warranty. You may redistribute */
- + /* this software, provided that this copyright notice is retained, */
- + /* and that the software is not distributed for profit. If you */
- + /* wish to use this software in a profit-making venture, you must */
- + /* first license this code and its underlying technology from */
- + /* Harris Corporation. */
- + /* */
- + /* Bottom line: you can have this software, you can use it, you */
- + /* can give it away. You just can't sell any or all parts of it */
- + /* without prior permission from Harris Corporation. */
- + /************************************************************************/
- +
- + #include <stdio.h>
- +
- + #include "manifest.h"
- +
- + /************************************************************************/
- + PRIVATE delarg(argc, argv)
- +
- + int *argc;
- + char **argv;
- +
- + { char *p;
- +
- + while (*argv = *(argv+1))
- + argv++;
- + (*argc)--;
- + }
- +
- + /************************************************************************/
- + EXPORT char getopt(argc, argv, opts, parm)
- +
- + int *argc;
- + char **argv;
- + char *opts;
- + char **parm;
- +
- + { char c, *p, *strcpy(), *index();
- + int killed;
- +
- + *parm = NULL;
- + while (*argv && ((**argv != '-') || (*(*argv+1) == '\0')))
- + argv++;
- + if (*argv == NULL)
- + return(EOF);
- + c = *(*argv+1);
- + *++(*argv) = '-';
- + if (killed = (*(*argv+1) == '\0'))
- + delarg(argc, argv);
- + if ((p = index(opts, c)) == NULL)
- + c = '\0';
- + else if (*(p+1) == ':') {
- + *parm = killed ? *argv : *argv+1;
- + delarg(argc, argv);
- + }
- + return(c);
- + }
- *** misc.c.orig Wed Jul 24 09:38:46 1991
- --- misc.c Fri May 17 09:10:00 1991
- ***************
- *** 117,164 ****
- X }
- X
- X /************************************************************************/
- - PRIVATE delarg(argc, argv)
- -
- - int *argc;
- - char **argv;
- -
- - { char *p;
- -
- - while (*argv = *(argv+1))
- - argv++;
- - (*argc)--;
- - }
- -
- - /************************************************************************/
- - EXPORT char getopt(argc, argv, opts, parm)
- -
- - int *argc;
- - char **argv;
- - char *opts;
- - char **parm;
- -
- - { char c, *p, *index();
- - int killed;
- -
- - *parm = NULL;
- - while (*argv && ((**argv != '-') || (*(*argv+1) == '\0')))
- - argv++;
- - if (*argv == NULL)
- - return(EOF);
- - c = *(*argv+1);
- - *++(*argv) = '-';
- - if (killed = (*(*argv+1) == '\0'))
- - delarg(argc, argv);
- - if ((p = index(opts, c)) == NULL)
- - c = '\0';
- - else if (*(p+1) == ':') {
- - *parm = killed ? *argv : *argv+1;
- - delarg(argc, argv);
- - }
- - return(c);
- - }
- -
- - /************************************************************************/
- X EXPORT int is_empty(s)
- X
- X char *s;
- --- 117,122 ----
- *** object.c.orig Wed Jul 24 09:38:46 1991
- --- object.c Wed Jul 17 15:18:34 1991
- ***************
- *** 24,29 ****
- --- 24,30 ----
- X /************************************************************************/
- X
- X #include "manifest.h"
- + #include "packet.h"
- X #include "record.h"
- X #include "object.h"
- X
- ***************
- *** 44,52 ****
- X
- X object *obj;
- X
- ! {
- ! if (obj->buf)
- ! free(obj->buf);
- X free(obj);
- X }
- X
- --- 45,55 ----
- X
- X object *obj;
- X
- ! { int i;
- !
- ! for (i = 0; i < MAX_FIELDS + 1; i++)
- ! if (obj->field[i])
- ! free(obj->field[i]);
- X free(obj);
- X }
- X
- ***************
- *** 73,84 ****
- X
- X obj = create_object();
- X obj->kind = OBJ_MEMO;
- ! obj->buf = (byte *) malloc(sizeof(byte) * MAX_OBJECT_DATA);
- ! strcpy(obj->buf, buf);
- ! for (buf = obj->buf; *buf; buf++)
- X if (*buf == '\n')
- X *buf = '\r';
- - obj->mem_memo = obj->buf;
- X return(obj);
- X }
- X
- --- 76,87 ----
- X
- X obj = create_object();
- X obj->kind = OBJ_MEMO;
- ! obj->mem_memo = (byte *) strsave(buf);
- ! if (strlen(buf) >= MAX_OBJECT_DATA)
- ! obj->mem_memo[MAX_OBJECT_DATA] = '\0';
- ! for (buf = obj->mem_memo; *buf; buf++)
- X if (*buf == '\n')
- X *buf = '\r';
- X return(obj);
- X }
- X
- ***************
- *** 88,94 ****
- X record *rec;
- X
- X { object *obj;
- ! byte *p;
- X int i;
- X
- X if (rec->type != REC_MODE)
- --- 91,97 ----
- X record *rec;
- X
- X { object *obj;
- ! byte *p, buf[MAX_OBJECT_DATA];
- X int i;
- X
- X if (rec->type != REC_MODE)
- ***************
- *** 95,109 ****
- X return(NULL);
- X obj = create_object();
- X obj->from_casio = TRUE;
- X for ( ; rec; rec = rec->next)
- X switch(rec->type) {
- ! case REC_DATA : if (address_kind(rec->address) == REC_DATA_DATA) {
- ! if (obj->buf == NULL) {
- ! obj->buf = (byte *) malloc(sizeof(byte) * MAX_OBJECT_DATA);
- ! bzero(obj->buf, sizeof(byte) * MAX_OBJECT_DATA);
- ! }
- ! bcopy(rec->data, obj->buf + address_start(rec->address), rec->length);
- ! }
- X else if (address_kind(rec->address) == REC_DATA_ALARM) {
- X if (obj->kind == OBJ_SCHEDULE)
- X ascii_to_time(rec->data, &obj->sch_alarm_time, NULL);
- --- 98,108 ----
- X return(NULL);
- X obj = create_object();
- X obj->from_casio = TRUE;
- + bzero(buf, sizeof(buf));
- X for ( ; rec; rec = rec->next)
- X switch(rec->type) {
- ! case REC_DATA : if (address_kind(rec->address) == REC_DATA_DATA)
- ! bcopy(rec->data, buf + address_start(rec->address), rec->length);
- X else if (address_kind(rec->address) == REC_DATA_ALARM) {
- X if (obj->kind == OBJ_SCHEDULE)
- X ascii_to_time(rec->data, &obj->sch_alarm_time, NULL);
- ***************
- *** 177,188 ****
- X free_object(obj);
- X return(NULL);
- X }
- ! if (obj->buf) {
- ! obj->field[0] = obj->buf;
- ! for (p = obj->buf, i = 1; *p; p++)
- X if (*p == CASIO_END_ENTRY) {
- X *p = '\0';
- ! obj->field[i++] = p + 1;
- X }
- X for ( ; i < MAX_FIELDS; i++)
- X obj->field[i] = NULL;
- --- 176,188 ----
- X free_object(obj);
- X return(NULL);
- X }
- ! if (*buf) {
- ! obj->field[0] = buf;
- ! for (p = buf, i = 0; *p; p++)
- X if (*p == CASIO_END_ENTRY) {
- X *p = '\0';
- ! obj->field[i] = (byte *) strsave(obj->field[i]);
- ! obj->field[++i] = p + 1;
- X }
- X for ( ; i < MAX_FIELDS; i++)
- X obj->field[i] = NULL;
- ***************
- *** 199,205 ****
- X object *obj;
- X
- X { record *head, *rec;
- ! int i;
- X byte *p, *q;
- X
- X head = rec = make_mode_record(0); /* use a dummy mode value */
- --- 199,205 ----
- X object *obj;
- X
- X { record *head, *rec;
- ! int i, last, offset;
- X byte *p, *q;
- X
- X head = rec = make_mode_record(0); /* use a dummy mode value */
- ***************
- *** 238,268 ****
- X free_record(head);
- X return(NULL);
- X }
- ! for (i = 0; i < MAX_FIELDS; i++)
- ! if (p = obj->field[i])
- ! do {
- ! rec->next = create_record();
- ! rec = rec->next;
- ! rec->type = REC_DATA;
- ! if (q = (byte *) index(p, CASIO_END_LINE))
- ! rec->length = q - p + 1;
- ! else
- ! rec->length = strlen(p) + 1;
- ! rec->address = REC_DATA_DATA + p - obj->buf;
- ! bcopy(p, rec->data, rec->length - 1);
- ! if (q) {
- ! rec->data[rec->length - 1] = CASIO_END_LINE;
- ! p = q + 1;
- ! }
- ! else if (obj->field[i + 1]) {
- ! rec->data[rec->length - 1] = CASIO_END_ENTRY;
- ! p += rec->length - 1;
- ! }
- ! else {
- ! rec->length--;
- ! p += rec->length;
- ! }
- ! } while (*p);
- X rec->next = create_record();
- X rec = rec->next;
- X rec->length = 0;
- --- 238,269 ----
- X free_record(head);
- X return(NULL);
- X }
- ! for (last = MAX_FIELDS; last >= 0 && obj->field[last] == NULL; last--)
- ! ;
- ! for (i = offset = 0; i <= last; i++) {
- ! p = obj->field[i];
- ! do {
- ! rec->next = create_record();
- ! rec = rec->next;
- ! rec->type = REC_DATA;
- ! rec->address = REC_DATA_DATA + offset;
- ! if (p == NULL)
- ! rec->length = 0;
- ! else if (q = (byte *) index(p, CASIO_END_LINE))
- ! rec->length = q - p + 1;
- ! else
- ! rec->length = strlen(p);
- ! if (rec->length > 127)
- ! rec->length = 127;
- ! if (p) {
- ! bcopy(p, rec->data, rec->length);
- ! p += rec->length;
- ! }
- ! if ((p == NULL || *p == '\0') && i < last)
- ! rec->data[rec->length++] = CASIO_END_ENTRY;
- ! offset += rec->length;
- ! } while (p && *p);
- ! }
- X rec->next = create_record();
- X rec = rec->next;
- X rec->length = 0;
- ***************
- *** 277,296 ****
- X object *obj;
- X
- X { record *rec, *r;
- X
- ! rec = object_to_record(obj);
- ! if (!send_record(rec))
- ! return(FALSE);
- ! while (rec) {
- ! r = rec;
- ! rec = rec->next;
- ! free_record(r);
- X }
- ! if (!wait_for_acknowledgement()) {
- ! error("BOSS did not acknowledge receipt of object");
- ! return(FALSE);
- ! }
- ! return(TRUE);
- X }
- X
- X /************************************************************************/
- --- 278,305 ----
- X object *obj;
- X
- X { record *rec, *r;
- + int result, retries;
- X
- ! for (retries = 4; retries > 0; retries--) {
- ! rec = object_to_record(obj);
- ! if (!send_record(rec))
- ! return(FALSE);
- ! while (rec) {
- ! r = rec;
- ! rec = rec->next;
- ! free_record(r);
- ! }
- ! if ((result = wait_for_acknowledgement()) == OBJECT_RECEIVED)
- ! return(TRUE);
- ! else if (result == OBJECT_RESEND)
- ! wait_casio(3000); /* let's all catch our breath */
- ! else {
- ! error("BOSS did not acknowledge receipt of object");
- ! return(FALSE);
- ! }
- X }
- ! error("Transmission aborted due to repeated failures reported by BOSS");
- ! return(FALSE);
- X }
- X
- X /************************************************************************/
- *** object.h.orig Wed Jul 24 09:38:47 1991
- --- object.h Wed Jul 17 10:02:34 1991
- ***************
- *** 67,73 ****
- X
- X struct o_rec {int kind;
- X int from_casio;
- - byte *buf;
- X byte *field[MAX_FIELDS + 1];
- X byte marked;
- X date sch_date;
- --- 67,72 ----
- *** packet.c.orig Wed Jul 24 09:38:48 1991
- --- packet.c Wed Jul 17 08:25:59 1991
- ***************
- *** 25,30 ****
- --- 25,31 ----
- X
- X #include "manifest.h"
- X #include "casio.h"
- + #include "packet.h"
- X
- X PRIVATE int session_open = FALSE;
- X PRIVATE char hex[] = "0123456789ABCDEF";
- ***************
- *** 130,136 ****
- X error("error awaiting packet ACK from BOSS");
- X return(FALSE);
- X }
- ! else if (b == '?') {
- X disable_flow_control();
- X usleep(20000);
- X i = read_casio(&b, 1, 1000);
- --- 131,137 ----
- X error("error awaiting packet ACK from BOSS");
- X return(FALSE);
- X }
- ! else if (b == RCV_ERROR) {
- X disable_flow_control();
- X usleep(20000);
- X i = read_casio(&b, 1, 1000);
- ***************
- *** 217,226 ****
- X
- X if (read_casio(&b, 1, 60000) == 1)
- X if (b == PACKET_ACK)
- ! return(TRUE);
- X else
- X error("invalid object acknowledgement: %c (%02x)", b, b);
- X else
- X error("no acknowledgement received from BOSS");
- ! return(FALSE);
- X }
- --- 218,229 ----
- X
- X if (read_casio(&b, 1, 60000) == 1)
- X if (b == PACKET_ACK)
- ! return(OBJECT_RECEIVED);
- ! else if (b == XMIT_ERROR)
- ! return(OBJECT_RESEND);
- X else
- X error("invalid object acknowledgement: %c (%02x)", b, b);
- X else
- X error("no acknowledgement received from BOSS");
- ! return(OBJECT_ERROR);
- X }
- *** packet.h.orig Wed Jul 24 09:38:49 1991
- --- packet.h Wed Jul 17 08:26:01 1991
- ***************
- *** 35,40 ****
- --- 35,44 ----
- X #define PORT_TTYA 0
- X #define PORT_TTYB 1
- X
- + #define OBJECT_RECEIVED 0
- + #define OBJECT_RESEND 1
- + #define OBJECT_ERROR 2
- +
- X PUBLIC int start_session();
- X PUBLIC int send_packet();
- X PUBLIC int receive_packet();
- *** parse.y.orig Wed Jul 24 09:38:49 1991
- --- parse.y Wed Jul 17 14:56:06 1991
- ***************
- *** 79,85 ****
- X parsed_object_list = $2;
- X else
- X $1->next = $2;
- - fill_fields($2);
- X $$ = $2;
- X }
- X ;
- --- 79,84 ----
- ***************
- *** 109,131 ****
- X phone_attr : marked
- X { curr_object->marked = TRUE; }
- X | name
- ! { add_field(&(curr_object->pho_name), $1); }
- X | number
- ! { add_field(&(curr_object->pho_number), $1); }
- X | address
- ! { add_field(&(curr_object->pho_address), $1); }
- X | extra_1
- ! { add_field(&(curr_object->pho_extra_1), $1); }
- X | extra_2
- ! { add_field(&(curr_object->pho_extra_2), $1); }
- X | extra_3
- ! { add_field(&(curr_object->pho_extra_3), $1); }
- X | extra_4
- ! { add_field(&(curr_object->pho_extra_4), $1); }
- X | extra_5
- ! { add_field(&(curr_object->pho_extra_5), $1); }
- X | extra_6
- ! { add_field(&(curr_object->pho_extra_6), $1); }
- X ;
- X
- X schedule_object : LBRACE SCHEDULE
- --- 108,130 ----
- X phone_attr : marked
- X { curr_object->marked = TRUE; }
- X | name
- ! { curr_object->pho_name = (byte *) $1; }
- X | number
- ! { curr_object->pho_number = (byte *) $1; }
- X | address
- ! { curr_object->pho_address = (byte *) $1; }
- X | extra_1
- ! { curr_object->pho_extra_1 = (byte *) $1; }
- X | extra_2
- ! { curr_object->pho_extra_2 = (byte *) $1; }
- X | extra_3
- ! { curr_object->pho_extra_3 = (byte *) $1; }
- X | extra_4
- ! { curr_object->pho_extra_4 = (byte *) $1; }
- X | extra_5
- ! { curr_object->pho_extra_5 = (byte *) $1; }
- X | extra_6
- ! { curr_object->pho_extra_6 = (byte *) $1; }
- X ;
- X
- X schedule_object : LBRACE SCHEDULE
- ***************
- *** 158,164 ****
- X | alarm_time
- X { curr_object->sch_alarm_time = *$1; }
- X | memo
- ! { add_field(&(curr_object->sch_memo), $1); }
- X ;
- X
- X memo_object : LBRACE MEMO
- --- 157,163 ----
- X | alarm_time
- X { curr_object->sch_alarm_time = *$1; }
- X | memo
- ! { curr_object->sch_memo = (byte *) $1; }
- X ;
- X
- X memo_object : LBRACE MEMO
- ***************
- *** 179,185 ****
- X memo_attr : marked
- X { curr_object->marked = TRUE; }
- X | memo
- ! { add_field(&(curr_object->sch_memo), $1); }
- X ;
- X
- X card_object : LBRACE CARD
- --- 178,184 ----
- X memo_attr : marked
- X { curr_object->marked = TRUE; }
- X | memo
- ! { curr_object->sch_memo = (byte *) $1; }
- X ;
- X
- X card_object : LBRACE CARD
- ***************
- *** 202,236 ****
- X card_attr : marked
- X { curr_object->marked = TRUE; }
- X | employer
- ! { add_field(&(curr_object->car_employer), $1); }
- X | name
- ! { add_field(&(curr_object->car_name), $1); }
- X | number
- ! { add_field(&(curr_object->car_number), $1); }
- X | position
- ! { add_field(&(curr_object->car_position), $1); }
- X | department
- ! { add_field(&(curr_object->car_department), $1); }
- X | pobox
- ! { add_field(&(curr_object->car_pobox), $1); }
- X | address
- ! { add_field(&(curr_object->car_address), $1); }
- X | telex
- ! { add_field(&(curr_object->car_telex), $1); }
- X | fax
- ! { add_field(&(curr_object->car_fax), $1); }
- X | extra_1
- ! { add_field(&(curr_object->car_extra_1), $1); }
- X | extra_2
- ! { add_field(&(curr_object->car_extra_2), $1); }
- X | extra_3
- ! { add_field(&(curr_object->car_extra_3), $1); }
- X | extra_4
- ! { add_field(&(curr_object->car_extra_4), $1); }
- X | extra_5
- ! { add_field(&(curr_object->car_extra_5), $1); }
- X | extra_6
- ! { add_field(&(curr_object->car_extra_6), $1); }
- X ;
- X
- X calendar_object : LBRACE CALENDAR
- --- 201,235 ----
- X card_attr : marked
- X { curr_object->marked = TRUE; }
- X | employer
- ! { curr_object->car_employer = (byte *) $1; }
- X | name
- ! { curr_object->car_name = (byte *) $1; }
- X | number
- ! { curr_object->car_number = (byte *) $1; }
- X | position
- ! { curr_object->car_position = (byte *) $1; }
- X | department
- ! { curr_object->car_department = (byte *) $1; }
- X | pobox
- ! { curr_object->car_pobox = (byte *) $1; }
- X | address
- ! { curr_object->car_address = (byte *) $1; }
- X | telex
- ! { curr_object->car_telex = (byte *) $1; }
- X | fax
- ! { curr_object->car_fax = (byte *) $1; }
- X | extra_1
- ! { curr_object->car_extra_1 = (byte *) $1; }
- X | extra_2
- ! { curr_object->car_extra_2 = (byte *) $1; }
- X | extra_3
- ! { curr_object->car_extra_3 = (byte *) $1; }
- X | extra_4
- ! { curr_object->car_extra_4 = (byte *) $1; }
- X | extra_5
- ! { curr_object->car_extra_5 = (byte *) $1; }
- X | extra_6
- ! { curr_object->car_extra_6 = (byte *) $1; }
- X ;
- X
- X calendar_object : LBRACE CALENDAR
- ***************
- *** 400,449 ****
- X error(buf1);
- X yyclearin;
- X parse_errors_occured++;
- - }
- -
- - /************************************************************************/
- - PRIVATE add_field(field, value)
- -
- - byte **field;
- - byte *value;
- -
- - { byte *p;
- -
- - if (*field)
- - yyerror("duplicate value for this field");
- - if (value == NULL || *value == '\0')
- - return;
- - if (curr_object->buf == NULL) {
- - curr_object->buf = (byte *) malloc(MAX_OBJECT_DATA);
- - bzero(curr_object->buf, MAX_OBJECT_DATA);
- - }
- - for (p = curr_object->buf + MAX_OBJECT_DATA - 1; p > curr_object->buf && *p == '\0'; p--)
- - ;
- - if (*p)
- - p += 2;
- - if (p + strlen(value) >= curr_object->buf + MAX_OBJECT_DATA) {
- - yyerror("too much data for this object");
- - *field = NULL;
- - }
- - else {
- - strcpy(p, value);
- - *field = p;
- - }
- - }
- -
- - /************************************************************************/
- - PRIVATE fill_fields(obj)
- -
- - object *obj;
- -
- - { int i;
- -
- - for (i = MAX_FIELDS - 1; i >= 0; i--)
- - if (obj->field[i])
- - for (i--; i >= 0; i--)
- - if (obj->field[i] == NULL)
- - add_field(&(obj->field[i]), "");
- X }
- X
- X #include "lex.c"
- --- 399,404 ----
- *** patchlevel.h.orig Wed Jul 24 09:38:50 1991
- --- patchlevel.h Wed Jul 24 09:34:28 1991
- ***************
- *** 19,33 ****
- X
- X /************************************************************************/
- X /* */
- ! /* 0 15 Oct 90 Initial release */
- ! /* comp.sources.x: Volume 10, Issues 3-8 */
- X /* */
- ! /* 1 1 Dec 90 Restructured code for maintainability */
- X /* Added "About Boss..." */
- X /* Added warning about downloads at 9600 */
- X /* baud */
- X /* */
- ! /* 2 15 Jan 91 Fixed bug in storing marked records */
- X /* Enhanced dialog placement */
- X /* */
- X /************************************************************************/
- --- 19,40 ----
- X
- X /************************************************************************/
- X /* */
- ! /* 0 15 Oct 90 comp.sources.x: Volume 10, Issues 3-8 */
- ! /* Initial release */
- X /* */
- ! /* 1 1 Dec 90 comp.sources.x: Volume 10, Issue 91 */
- ! /* Restructured code for maintainability */
- X /* Added "About Boss..." */
- X /* Added warning about downloads at 9600 */
- X /* baud */
- X /* */
- ! /* 2 15 Jan 91 comp.sources.x: Volume 11, Issue 4 */
- ! /* Fixed bug in storing marked records */
- X /* Enhanced dialog placement */
- + /* */
- + /* 3 24 Jul 91 comp.sources.x: Volume ??, Issue ?? */
- + /* Fixed unget_byte bug */
- + /* Added transmission delay support */
- + /* Fixed bug in object field management */
- X /* */
- X /************************************************************************/
- *** protocol.h.orig Wed Jul 24 09:38:53 1991
- --- protocol.h Wed Jun 19 10:18:46 1991
- ***************
- *** 31,33 ****
- --- 31,34 ----
- X #define DISABLE_FLOW_CONTROL 5
- X #define FLUSH_CASIO 6
- X #define UNGET_BYTE 7
- + #define WAIT_CASIO 8
- SHAR_EOF
- chmod 0664 patch ||
- echo 'restore of patch failed'
- Wc_c="`wc -c < 'patch'`"
- test 32133 -eq "$Wc_c" ||
- echo 'patch: original size 32133, current size' "$Wc_c"
- fi
- exit 0
-
- --
- Dan Heller
- O'Reilly && Associates Z-Code Software Comp-sources-x:
- Senior Writer President comp-sources-x@uunet.uu.net
- argv@ora.com argv@zipcode.com
-